Diseñar para la concurrencia en Elixir va más allá de simplemente crear procesos; requiere un método riguroso para alcanzar una fiabilidad del 99,9999999% (nueve nueves). Esto equivale aproximadamente a 1 segundo de interrupción cada 30 años. Para alcanzar esta meta, utilizamos el marco de cinco preguntas.
La heurística estructural
Antes de escribir una sola línea de código OTP, utilice estas preguntas para descomponer problemas con estado en primitivas manejables:
- Entorno y restricciones: ¿Es un nodo único? ¿Un clúster global? ¿Cuáles son los límites de memoria/entrada-salida?
- Puntos focales: ¿Dónde reside los datos? ¿Quién "posee" el estado (por ejemplo, un libro de resultados)?
- Características de tiempo de ejecución: ¿Cuántas solicitudes concurrentes? ¿Son limitadas por CPU o por entrada-salida?
- Protección: ¿Qué estado debe sobrevivir? ¿Qué podemos permitirnos perder y reiniciar?
- Inicialización: ¿Cómo inicializamos el árbol? ¿Qué servicios dependen de otros?
Al tratar estas preguntas como restricciones, evita la concurrencia tipo "gran bola de lodo", en la que cada proceso se comunica con todos los demás sin jerarquías claras.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>